home *** CD-ROM | disk | FTP | other *** search
/ The Complete Utilities To…ka 501 Killer Utilities! / 501 Killer Utilities! (Macworld July 1995).cdr / Programming / OutOfPhase1.1 Source / OutOfPhase Folder / FilterSpec.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-08  |  5.1 KB  |  141 lines  |  [TEXT/KAHL]

  1. /* FilterSpec.h */
  2.  
  3. #ifndef Included_FilterSpec_h
  4. #define Included_FilterSpec_h
  5.  
  6. /* FilterSpec module depends on */
  7. /* MiscInfo.h */
  8. /* Audit */
  9. /* Debug */
  10. /* Definitions */
  11. /* Memory */
  12. /* Array */
  13. /* LFOListSpecifier */
  14. /* Envelope */
  15.  
  16. struct FilterSpecRec;
  17. typedef struct FilterSpecRec FilterSpecRec;
  18.  
  19. struct OneFilterRec;
  20. typedef struct OneFilterRec OneFilterRec;
  21.  
  22. /* types of filters */
  23. typedef enum
  24.     {
  25.         eFilterNull EXECUTE(= -2341),
  26.         eFilterFirstOrderLowpass,
  27.         eFilterFirstOrderHighpass,
  28.         eFilterSecondOrderResonant,
  29.         eFilterSecondOrderZero,
  30.         eFilterButterworthLowpass,
  31.         eFilterButterworthHighpass,
  32.         eFilterButterworthBandpass,
  33.         eFilterButterworthBandreject
  34.     } FilterTypes;
  35.  
  36. /* signal normalization options */
  37. typedef enum
  38.     {
  39.         eFilterDefaultScaling EXECUTE(= -5132),
  40.         eFilterResonMidbandGain1,
  41.         eFilterResonNoiseGain1,
  42.         eFilterZeroGain1
  43.     } FilterScalings;
  44.  
  45. /* filter channels */
  46. typedef enum
  47.     {
  48.         eFilterLeft EXECUTE(= 12435),
  49.         eFilterRight,
  50.         eFilterBoth
  51.     } FilterChannels;
  52.  
  53. /* forwards */
  54. struct EnvelopeRec;
  55. struct LFOListSpecRec;
  56.  
  57. /* create a new parallel filter specification */
  58. FilterSpecRec*        NewFilterSpec(void);
  59.  
  60. /* dispose of a filter specification */
  61. void                            DisposeFilterSpec(FilterSpecRec* Filter);
  62.  
  63. /* add a single filter to the list */
  64. MyBoolean                    AppendFilterToSpec(FilterSpecRec* Filter, OneFilterRec* Spec);
  65.  
  66. /* get the number of filters */
  67. long                            GetNumFiltersInSpec(FilterSpecRec* Filter);
  68.  
  69. /* get a filter type for the specified filter spec */
  70. FilterTypes                GetFilterType(FilterSpecRec* Filter, long Index);
  71.  
  72. /* get which channel to apply a filter to */
  73. FilterChannels        GetFilterChannel(FilterSpecRec* Filter, long Index);
  74.  
  75. /* get the cutoff frequency for a filter */
  76. float                            GetFilterCutoff(FilterSpecRec* Filter, long Index);
  77. float                            GetFilterCutoffAccent1(FilterSpecRec* Filter, long Index);
  78. float                            GetFilterCutoffAccent2(FilterSpecRec* Filter, long Index);
  79. float                            GetFilterCutoffAccent3(FilterSpecRec* Filter, long Index);
  80. float                            GetFilterCutoffAccent4(FilterSpecRec* Filter, long Index);
  81.  
  82. /* get the filter bandwidth */
  83. float                            GetFilterBandwidth(FilterSpecRec* Filter, long Index);
  84. float                            GetFilterBandwidthAccent1(FilterSpecRec* Filter, long Index);
  85. float                            GetFilterBandwidthAccent2(FilterSpecRec* Filter, long Index);
  86. float                            GetFilterBandwidthAccent3(FilterSpecRec* Filter, long Index);
  87. float                            GetFilterBandwidthAccent4(FilterSpecRec* Filter, long Index);
  88.  
  89. /* get filter scaling mode */
  90. FilterScalings        GetFilterScalingMode(FilterSpecRec* Filter, long Index);
  91.  
  92. /* get filter output multiplier */
  93. float                            GetFilterOutputMultiplier(FilterSpecRec* Filter, long Index);
  94. float                            GetFilterOutputMultiplierAccent1(FilterSpecRec* Filter, long Index);
  95. float                            GetFilterOutputMultiplierAccent2(FilterSpecRec* Filter, long Index);
  96. float                            GetFilterOutputMultiplierAccent3(FilterSpecRec* Filter, long Index);
  97. float                            GetFilterOutputMultiplierAccent4(FilterSpecRec* Filter, long Index);
  98.  
  99. /* get envelope things */
  100. struct EnvelopeRec*    GetFilterCutoffEnvelope(FilterSpecRec* Filter, long Index);
  101. struct EnvelopeRec*    GetFilterBandwidthEnvelope(FilterSpecRec* Filter, long Index);
  102. struct EnvelopeRec*    GetFilterOutputEnvelope(FilterSpecRec* Filter, long Index);
  103. struct LFOListSpecRec*    GetFilterCutoffLFO(FilterSpecRec* Filter, long Index);
  104. struct LFOListSpecRec*    GetFilterBandwidthLFO(FilterSpecRec* Filter, long Index);
  105. struct LFOListSpecRec*    GetFilterOutputLFO(FilterSpecRec* Filter, long Index);
  106.  
  107. /* create a new filter specification record */
  108. OneFilterRec*            NewSingleFilterSpec(FilterTypes FilterType);
  109.  
  110. /* dispose of a single filter specification record */
  111. void                            DisposeSingleFilterSpec(OneFilterRec* Spec);
  112.  
  113. /* set filter cutoff value */
  114. void                            SetSingleFilterCutoff(OneFilterRec* Spec, float Cutoff);
  115. void                            SetSingleFilterCutoffAccent1(OneFilterRec* Spec, float Accent1);
  116. void                            SetSingleFilterCutoffAccent2(OneFilterRec* Spec, float Accent2);
  117. void                            SetSingleFilterCutoffAccent3(OneFilterRec* Spec, float Accent3);
  118. void                            SetSingleFilterCutoffAccent4(OneFilterRec* Spec, float Accent4);
  119.  
  120. /* set filter bandwidth value */
  121. void                            SetSingleFilterBandwidth(OneFilterRec* Spec, float Bandwidth);
  122. void                            SetSingleFilterBandwidthAccent1(OneFilterRec* Spec, float Accent1);
  123. void                            SetSingleFilterBandwidthAccent2(OneFilterRec* Spec, float Accent2);
  124. void                            SetSingleFilterBandwidthAccent3(OneFilterRec* Spec, float Accent3);
  125. void                            SetSingleFilterBandwidthAccent4(OneFilterRec* Spec, float Accent4);
  126.  
  127. /* set filter scaling mode */
  128. void                            SetSingleFilterScalingMode(OneFilterRec* Spec, FilterScalings Scaling);
  129.  
  130. /* set filter channel */
  131. void                            SetSingleFilterChannel(OneFilterRec* Spec, FilterChannels Channel);
  132.  
  133. /* set filter output multiplier */
  134. void                            SetSingleFilterOutputMultiplier(OneFilterRec* Spec, float Output);
  135. void                            SetSingleFilterOutputMultiplierAccent1(OneFilterRec* Spec, float Accent1);
  136. void                            SetSingleFilterOutputMultiplierAccent2(OneFilterRec* Spec, float Accent2);
  137. void                            SetSingleFilterOutputMultiplierAccent3(OneFilterRec* Spec, float Accent3);
  138. void                            SetSingleFilterOutputMultiplierAccent4(OneFilterRec* Spec, float Accent4);
  139.  
  140. #endif
  141.